package cn.cocho.android.mc.file.downloader;

/**
 * 文件下载中的监听器
 * 
 * @author HAIKANG SONG
 * @2013年7月17日 @下午5:09:40
 */
public interface DownloaderListener {

	/**
	 * 任何一个下载任务开始的时候都会调用这个方法。
	 * 
	 * @param threadKey
	 *            该下载类在线程池中的键，可以通过该键取消任务
	 * @author HAIKANG SONG
	 */
	void start(String threadKey);

	/**
	 * 下载过程中,缓冲区每次写满后调用，通常用来计算进度
	 * 
	 * @param threadKey
	 *            线程的键
	 * @param completeSize
	 *            已经下载的字节
	 * @param totalSize
	 *            总字节数
	 * @author HAIKANG SONG
	 */
	void progress(String threadKey, long completeSize, long totalSize);

	/**
	 * 下载出错
	 * 
	 * @param threadKey
	 *            线程的键
	 * @param e
	 *            异常对象
	 * @author HAIKANG SONG
	 */
	void error(String threadKey, Exception e);

	/**
	 * 用于任务结束的时候调用
	 * 
	 * @param threadKey
	 *            线程的键
	 * @param complete
	 *            true：正常结束，false：非正常结束
	 */
	void stop(String threadKey, boolean complete);

}
